package pe.com.tma.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.model.chart.PieChartModel;

import pe.com.tma.model.Cartera;
import pe.com.tma.model.Usuario;
import pe.com.tma.service.CarteraService;
import pe.com.tma.service.CotizacionService;
import pe.com.tma.service.UsuarioService;
import pe.com.tma.util.ParametrosGrl;

public class CarteraBean implements Serializable{
	
	private List<Cartera> cartera;
	private PieChartModel pieModel;   
	private Usuario user;
	private double	totalMN;
	private double	totalME;
	
	private CarteraService srv;
	private CotizacionService srvCoti;
	private Double tc;
	
	private ParametrosGrl grl = new ParametrosGrl();
	
	public CarteraBean(){
		
		//HttpSession session =  (HttpSession) faces.getExternalContext().getSession(true);
		FacesContext fCtx = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(true);
		user = (Usuario) session.getAttribute("user");
		tc =  grl.getTipoCambio();
		srv = new CarteraService();
		System.out.println("Dat: " + user.getNombres());
		//String sessionId = session.getId();
		cartera = srv.obtenerCartera(user);
		cotizarCatera(cartera);
		
			
		LlenarChar(cartera);
	}

	private void cotizarCatera(List<Cartera> lst) {
		// TODO Auto-generated method stub
		srvCoti = new CotizacionService();
		Number coti=0;
		Number mn,me;
		for(int i=0; i<lst.size();i++){
			coti = srvCoti.obtenerUltCotizacion(lst.get(i).getInstrumento());
			lst.get(i).setCotizacionActual(coti);
			if(lst.get(i).getCodMoneda()==1){
				mn = lst.get(i).getCotizacionActual().doubleValue() * lst.get(i).getStock().doubleValue();
				me = mn.doubleValue() / tc;
			}else{
				me = lst.get(i).getCotizacionActual().doubleValue() * lst.get(i).getStock().doubleValue();
				mn = me.doubleValue() * tc;
			}
			lst.get(i).setValorizacionMN(mn);
			lst.get(i).setValorizacionME(me);
			coti = 0;
		}
		
	}

	void LlenarChar(List<Cartera> lst){
		
		pieModel = new PieChartModel();    
		
		for (int i = 0; i<lst.size();i++){
			
			pieModel.set(lst.get(i).getInstrumento().getIdInstrumento(), (lst.get(i).getValorizacionMN()));
		}
		
	}

	public PieChartModel getPieModel() {
		return pieModel;
	}
	public void setPieModel(PieChartModel pieModel) {
		this.pieModel = pieModel;
	}

	public List<Cartera> getCartera() {
		return cartera;
	}

	public void setCartera(List<Cartera> cartera) {
		this.cartera = cartera;
	}

	public double getTotalMN() {
		double total=0;
		for(int i=0;i<cartera.size();i++){
			total = total + cartera.get(i).getValorizacionMN().doubleValue();
		}
		totalMN = total;
		return totalMN;
	}

	public void setTotalMN(double totalMN) {
		this.totalMN = totalMN;
	}

	public double getTotalME() {
		double total=0;
		for(int i=0;i<cartera.size();i++){
			total = total + cartera.get(i).getValorizacionME().doubleValue();
		}
		totalME = total;
		return total;
	}

	public void setTotalME(double totalME) {
		this.totalME = totalME;
	}

	public Double getTc() {
		return tc;
	}

	public void setTc(Double tc) {
		this.tc = tc;
	}
	
	
}
